# 包管理器对比
https://zhuanlan.zhihu.com/p/526257537
主要就是围绕node_module
的治理
比如:
幽灵依赖:没安装却可以使用(采用扁平化导致)
依赖分身:多个包依赖同一个包,但是版本不同,会导致每个包下面都有那个依赖的包
yarn主要就是加了lock文件,可以锁定版本
pnpm则是将所有依赖装到电脑的全局store中,项目中全是通过链接的方式。
结构如下
node_modules
├── .pnpm
│ ├── A@1.0.0
│ │ └── node_modules
│ │ ├── A => <store>/A@1.0.0
│ │ └── B => ../../B@1.0.0
│ ├── B@1.0.0
│ │ └── node_modules
│ │ └── B => <store>/B@1.0.0
│ ├── B@2.0.0
│ │ └── node_modules
│ │ └── B => <store>/B@2.0.0
│ └── C@1.0.0
│ └── node_modules
│ ├── C => <store>/C@1.0.0
│ └── B => ../../B@2.0.0
│
├── A => .pnpm/A@1.0.0/node_modules/A
└── C => .pnpm/C@1.0.0/node_modules/C